package demo;

public class OutClass {
    private int a;
    static int b;
    int c;
    public void funcA(){
        a = 10;
        System.out.println(a);
    }
    public static void funcB(){
        System.out.println(b);
    }
    static class InClass{
        int c;
        public void funcIn(){
            // 内部类可以直接访问外部类中任意访问限定符修饰的成员
            // a = 100;  编译失败 a不是类变量
            b = 200;
            //funcA();   编译失败 funcA()不是类方法
            funcB();

            // 如果外部类和内部类有同名成员变量时 优先访问内部类自己的
            c = 300;
            System.out.println(c);

            // 如果要访问外部类中同名的成员变量时 使用this.来访问
//            OutClass.this.c = 400;
//            System.out.println(OutClass.this.c);
        }
    }

    public static void main(String[] args) {
        OutClass out = new OutClass();
        System.out.println(out.a);
        System.out.println(OutClass.b);
        System.out.println(out.c);
        out.funcA();
        out.funcB();

        System.out.println("======================");

        OutClass.InClass in = new OutClass.InClass();
        in.funcIn();
    }
}
